// src/core/types.ts

/**
 * 模块唯一标识符
 */
export type ModuleId = string & { __type: 'ModuleId' };

/**
 * 服务标识符
 */
export type ServiceKey<T> = string & { __type: 'ServiceKey' };

/**
 * 基本模块配置
 */
export interface ModuleConfig {
  id: ModuleId;
  name: string;
  version: string;
  entry: string; // 模块入口路径
  enabled: boolean;
  priority: number;
  dependencies?: ModuleDependency[];
  signature?: string; // 安全签名
}

/**
 * 模块依赖关系
 */
export interface ModuleDependency {
  moduleId: ModuleId;
  minVersion: string;
  maxVersion?: string;
}

/**
 * 路由级别元信息
 */
export interface ModuleRouteMeta {
  title: string;
  sidebarVisible: boolean;
  requiredRoles?: string[];
  moduleId?: ModuleId; // 所属模块
}